﻿/*
** Xin YUAN, 2023, BSD (2)
*/

////////////////////////////////////////////////////////////////////////////////
#ifndef __CTL_TASK_H__
#define __CTL_TASK_H__
////////////////////////////////////////////////////////////////////////////////

#ifndef __CTL_COLLB_H__
	#error task.h requires collb.h to be included first.
#endif

#include "_system_/task_impl.h"

////////////////////////////////////////////////////////////////////////////////
namespace CTL {
////////////////////////////////////////////////////////////////////////////////

//WorkDataBase
/*! \brief A base class for task working.

A base class for task working.
\note
\verbatim
User defines the derived class of WorkDataBase, then create a object pool of that class.
This object pool should be reusable, i.e., do not delete object when it is processed.
\endverbatim
*/
typedef work_data_base  WorkDataBase;

//TaskImpl<T>
/*! \brief A mix-in class for implementing the task.

A mix-in class for implementing the task.
\tparam T The final derived class.
*/
template <class T>
using TaskImpl = task_impl<T>;

////////////////////////////////////////////////////////////////////////////////
}
////////////////////////////////////////////////////////////////////////////////
#endif
////////////////////////////////////////////////////////////////////////////////
